package com.school.entity;

import java.util.ArrayList;
import java.util.List;

/**
 * 学生类：继承Person父类
 */
public class Student extends com.school.entity.Person {
    // 子类特有属性：所选课程列表（支持多选）
    private final List<Course> selectedCourses;

    // 构造方法：通过super()调用父类构造
    public Student(String id, String name, String gender) {
        super(id, name, gender); // 初始化父类的id、name、gender
        this.selectedCourses = new ArrayList<>(); // 初始化选课列表
    }

    // 选课方法
    public void selectCourse(Course course) {
        if (course != null && !selectedCourses.contains(course)) {
            selectedCourses.add(course);
            System.out.println(super.name + "（学生）成功选修《" + course.getCourseName() + "》");
        }
    }

    // 退课方法
    public void dropCourse(Course course) {
        if (course != null && selectedCourses.contains(course)) {
            selectedCourses.remove(course);
            System.out.println(super.name + "（学生）成功退选《" + course.getCourseName() + "》");
        }
    }

    // 重写父类抽象方法：打印学生课表
    @Override
    public void printWorksheet() {
        System.out.println("=== 学生课表（" + super.name + "，ID：" + super.id + "）===");
        if (selectedCourses.isEmpty()) {
            System.out.println("当前未选任何课程");
        } else {
            for (Course course : selectedCourses) {
                System.out.println("课程名称：" + course.getCourseName() +
                        " | 上课地点：" + course.getLocation() +
                        " | 上课时间：" + course.getTime() +
                        " | 授课教师：" + (course.getTeacher() != null ? course.getTeacher().getName() : "暂无"));
            }
        }
        System.out.println("==========================");
    }

}